A virtual machine (VM) is a software-based emulation of a physical computer. Although virtual machines are software-based emulations, the emulations still utilize physical resources in physical machines referred to as host computers.
A virtual machine management server, such as VMware® vCenter Server™, can provide a centralized way of managing virtual infrastructure resources like computation, storage, networks, etc. Infrastructure resources can also be aggregated and grouped using abstractions such as a cluster of host computers. Datastores can similarly be grouped into datastore clusters.
A resource management module, such as VMware vSphere® Distributed Resource Scheduler™, can be employed and configured to perform various management functions in order to efficiently allocate resources within host computers to VMs in a cluster. A resource management module can provide a way of performing intelligent and automatic resource management within a cluster. For example, the resource management module can perform automatic initial placement of a virtual machine within a cluster.
A power management module, such as VMware vSphere® Distributed Power Management™, can be employed and configured to opportunistically save power by dynamically right-sizing cluster capacity to match workload demands while respecting all cluster constraints. For example, the power management module recommends VM evacuation and powering-off hosts when the cluster has sufficient capacity such as CPU and memory capacity. It recommends powering-on hosts when resource utilization increases appropriately or additional host resources are needed to meet cluster constraints.
However, efficiently managing cluster resources can be complex and difficult with cluster demands varying from one workload to another. In addition, when additional resource capacity is needed in a cluster, determining the amount and type of resources to add to the cluster can be challenging.